#pragma once
#include "MouseEvent.h"

/**
=====================================
Any implementing interfaces will be able
to test for input from a mouse
=====================================
*/
class IMouseListener
{
public:
    IMouseListener() : m_Focus(false) {};

    /** A mouse button was pressed */
    virtual void MouseButtonPressed( MouseEvent* mEvent )=0;

    /** A mouse button was released */
    virtual void MouseButtonReleased( MouseEvent* mEvent )=0;

    /** Mouse Moved Event */
    virtual void MouseMotion( MouseEvent* mEvent )=0;

    /** Decide to consume this event */
    void SetMouseFocus( bool focus ) { m_Focus = focus; };

    /** Should the Input device consume this event */
    bool HasMouseFocus() { return m_Focus; };

    virtual ~IMouseListener() {};

private:
    bool        m_Focus;        // focus identifier
};